imshow(x, 'InitialMagnification',100);
%Converte para escala de cinza
%Mostra dimensões da imagem
%Mostra a imagem com o tamanho correto para ser possivel ver alteracao de
imshow(x, 'InitialMagnification',100);
title("Imagem original em escala de cinza");
disp(['Dimensões = ', num2str(L), ' x ', num2str(C)]);
%Mostra a imagem com tamanho comprimido
y_comprimido = dil_or_com(x,"c");
imshow(y_comprimido, 'InitialMagnification',100);
[L,C] = size(y_comprimido);
title("Imagem comprimida por fator N = 2");
disp(['Dimensões = ', num2str(L), ' x ', num2str(C)]);
%Mostra a imagem com tamanho dilatado
y_dilatado = dil_or_com(x,"d");
imshow(y_dilatado, 'InitialMagnification',100);
[L,C] = size(y_dilatado);
title("Imagem dilatada por fator N = 2");
disp(['Dimensões = ', num2str(L), ' x ', num2str(C)]);
function y = dil_or_com (x,modo)
%Guarda a quantidade de linhas e colunas da entrada
%Parte que faz a dilatação
x_dil(i+i-1,j+j-1) = atual;
x_dil(i+i-1+1,j+j-1) = atual;
x_dil(i+i-1,j+j-1+1) = atual;
x_dil(i+i-1+1,j+j-1+1) = atual;
%Parte que faz a compressão
x_com = zeros(round(L/2),round(C/2));
%Deixando do tamanho correto pois estava gerando uma linha e uma coluna
x_com = x_com(1:end-1, 1:end-1);
function [y, erro_relativo] = quantizacao (x,N)
%cria um vetor com os niveis de quantizacao entre 0 e 1
niveis = linspace(0,1,N);
%faz a interpolação dos niveis com a imagem
y = interp1(niveis, niveis, x, 'nearest');
num(i,j) = (abs(x(i,j) - y(i,j)))^2;
den(i,j) = (abs(x(i,j)))^2;
%transformando em um unico valor obtendo a média da matriz
erro_relativo = mean(erro_relativo(:));
function plot_erro_relativo(x)
vet_erros = zeros(1,255);
for N = 2 : length(vet_N)
[y, vet_erros(N)] = quantizacao(x,N);
% Plote o gráfico de Erelat em relação a N.
title('Erro Relativo x Níveis de Cinza');
function plot_quantizacao(x)
[y,z] = quantizacao(x,vet_N(i));
title([int2str(vet_N(i)),"níveis de cinza"]);